package com.dingup.provider.service.classInfo;

import com.dingup.api.adapter.student.StudentCourseInformationAdapter;
import com.dingup.api.bean.page.PageData;
import com.dingup.api.bean.query.classInfo.ClassInfoForPkBean;
import com.dingup.api.bean.requestBean.classInfo.ClassInfoBean;
import com.dingup.api.bean.requestBean.classInfo.ClassPageBean;
import com.dingup.api.enums.ClassStatusEnum;
import com.dingup.api.model.classInfo.ClassInfo;
import com.dingup.api.model.sys.SysUser;

import java.util.List;
import java.util.Map;

/**
 * Created by wancheng on 2018/8/24.
 */
public interface ClassInfoService {

    public PageData getClassInfo(ClassPageBean classPageBean,List<String> createUserIds);

    public PageData getClassInfo(Integer page,Integer rows,String query,List<String> createUserIds);

    public ClassInfo getByClassName(String className);

    public List<SysUser> getTeacher(Long schoolCampusId, String roleName);

    public List<SysUser> getStudent(List<String> createUserIds);

    public ClassInfo saveClassInfo(ClassInfoBean classInfoBean) throws CloneNotSupportedException;

    public void updateClassInfo(ClassInfoBean classInfoBean,String operaUserId) throws CloneNotSupportedException;

    public ClassInfo getClassInfo(Integer classId);

    public PageData getClassInfoByLessonIdAndStatus(Integer page,Integer rows,Integer lessonId, ClassStatusEnum classStatusEnum);

    public void updateClassStatus(Integer classId,ClassStatusEnum classStatusEnum,String operaUserId);

    public void deleteClass(Integer classId,String operaUserId);

    public List<ClassInfo> getClassByLessonId(Integer lessonId);

    public List<ClassInfo> getClassByLessonIdAndUserId(Integer lessonId, String userId);

    public ClassInfo getCourseClassInfo(Integer classId);

    public List<StudentCourseInformationAdapter> getUnDivideStudentByLessonId(Integer lessonId);

    public void divideStudent(Integer courseId,Integer classId,String divideUserId);

    public List<ClassInfo> getClassInfo(ClassInfoForPkBean bean);

    public List<ClassInfo> getAllClassInfo();

    /**
     * 获取班级分组  老师所属的班级和其他班级
     *
     * @param teacherId
     */
    List<Map<String, Object>> getClassInfoGroupByTeacherSelf(String teacherId);
}
